#!/bin/bash

# 语音识别 API 服务器环境设置脚本
# 使用 uv 管理的虚拟环境

echo "🔧 设置语音识别 API 服务器环境..."

# 获取脚本所在目录的父目录（项目根目录）
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"

# 切换到项目根目录
cd "$PROJECT_ROOT" || exit 1

echo "📁 项目根目录: $PROJECT_ROOT"

# 检查当前目录
if [ ! -f "pyproject.toml" ]; then
    echo "❌ 未找到 pyproject.toml 文件"
    echo "当前目录: $(pwd)"
    exit 1
fi

echo "✅ 已找到 pyproject.toml 文件"

# 检查 uv 是否安装
if ! command -v uv &> /dev/null; then
    echo "❌ uv 未安装，请先安装 uv"
    echo "安装命令: curl -LsSf https://astral.sh/uv/install.sh | sh"
    exit 1
fi

echo "✅ uv 已安装: $(uv --version)"

# 检查 Python 版本
echo "🐍 检查 Python 环境..."
if [ -f ".python-version" ]; then
    required_version=$(cat .python-version)
    echo "项目要求 Python 版本: $required_version"
fi

current_python=$(python --version 2>&1 | cut -d' ' -f2)
echo "当前 Python 版本: $current_python"

# 检查虚拟环境
if [ -d ".venv" ]; then
    echo "✅ 发现 uv 虚拟环境: .venv"
else
    echo "⚠️ 未发现虚拟环境，建议运行 'uv venv' 创建"
fi

# 检查依赖是否安装
echo "📦 检查项目依赖..."
if uv pip list | grep -q "funasr"; then
    echo "✅ FunASR 已安装: $(uv pip list | grep funasr | awk '{print $2}')"
else
    echo "❌ FunASR 未安装"
    echo "安装命令: uv sync"
    exit 1
fi

if uv pip list | grep -q "torch"; then
    echo "✅ PyTorch 已安装: $(uv pip list | grep -E '^torch ' | awk '{print $2}')"
else
    echo "❌ PyTorch 未安装"
    exit 1
fi

# 检查 MPS 支持
echo "🚀 检查 GPU 加速支持..."
python -c "
import torch
print(f'MPS 可用: {torch.backends.mps.is_available()}')
print(f'MPS 已构建: {torch.backends.mps.is_built()}')
if torch.backends.mps.is_available():
    print('✅ Apple Silicon GPU 加速已启用')
else:
    print('⚠️ 将使用 CPU 模式')
" 2>/dev/null || echo "⚠️ PyTorch 导入失败"

# 测试模块导入
echo "🧪 测试模块导入..."
if python -c "from src.speech_convert.config.funasr_config import CONFIG; print('✅ 配置模块导入成功')" 2>/dev/null; then
    echo "✅ 所有模块可以正常导入"
    echo "✅ CPU核心数配置: $(python -c "from src.speech_convert.config.funasr_config import CONFIG; print(CONFIG.server.DEFAULT_NCPU)")"
    echo "✅ GPU设备配置: $(python -c "from src.speech_convert.config.funasr_config import CONFIG; print(CONFIG.server.DEFAULT_DEVICE)")"
else
    echo "❌ 模块导入失败，请检查项目结构"
    exit 1
fi

echo ""
echo "🎉 环境设置完成！"
echo ""
echo "🚀 运行方式："
echo "1. 使用启动脚本: ./scripts/launching 1"
echo "2. 直接运行模块: python -m speech_convert.server.funasr_wss_server"
echo "3. 带参数运行: python -m speech_convert.server.funasr_wss_server --port 10096 --device mps"
echo ""
echo "📋 其他有用命令："
echo "- 检查代码质量: ruff check src/ --fix"
echo "- 格式化代码: ruff format src/"
echo "- 运行测试: pytest tests/"
echo "- 检查系统资源: python scripts/check_system_resources.py"
echo ""
